草庐IT

c - 未找到 mqueue.h

全部标签

c++ - 如何从 dll 内部找到 dll 的父 exe?

我需要根据加载它的进程在dll中做一些事情。因此,作为Windows编程的新手,我需要帮助弄清楚如何找到加载当前dll的exe。到目前为止,我一直在对exe文件名进行硬编码,这是最愚蠢的做法:D1)有人建议使用GetModuleFileName()函数。但这似乎使我的应用程序崩溃了。(我使用0作为模块句柄)。我什么都没做。我使用了以下语法GetModuleFileName(0,&fileName,MAX_PATH)编辑:我从here了解到我无法通过此调用获取.exe名称,因为它仅返回dll名称:(2)在DllMain中执行此操作是个好主意吗??我知道DllMain不是做复杂事情的地方。

c++ - 在方阵中,每个单元格都是黑色或白色。设计一个算法来找到最大子正方形,使得所有 4 个边框都是黑色

给定一个方阵,其中每个单元格都是黑色或白色。设计一个算法来找到最大的子正方形,使得所有4个边框都是黑色的。我有O(n^2)算法:从左到右扫描每一列,对于每一列中的每个单元格,扫描每一行以找到具有后边框的最大子方block。有更好的解决方案吗?谢谢 最佳答案 O(n^2)是可能的。我猜这是最佳选择,因为您有n^2个单元格。请注意,任何正方形的左上角和右下角都位于同一条对角线上。现在如果我们可以在O(n)时间内处理每条对角线,我们就会有一个O(n^2)时间算法。假设我们有一个左上角的候选。我们可以计算它下方和右侧的连续黑色单元格的数量,

c++ - 如何在 std::set<int*> 中找到 const int*?

首先,我有一套std::setmy_set;然后,我有一个函数来检查my_set中是否存在一个特定的int指针p,它只是返回true如果it指针存在于其中,否则为false。由于函数不修改被引用的int,所以很自然的把指针当作constint*,即boolexists_in_my_set(constint*p){returnmy_set.find(p)!=my_set.end();}但是,当我尝试编译代码时,出现以下错误:error:invalidconversionfrom'constint*'to'std::set::key_type{akaint*}'[-fpermissive]

c++ - 如何在一个DLL中找到哪个进程加载了它?

我正在改进一个DLL模块,它充当Windows应用程序的一种插件。此插件与单个软件系列的各种版本兼容。现在,对于某些功能,我必须访问父软件的配置文件。由于不同版本的软件在不同的地方都有这些,所以我必须找出哪个版本加载了DLL。可以通过进程可执行文件名称(即abc_v1.exe、abc_v2.exe、abc_v3.exe)轻松辨别不同的版本。有没有办法获取加载DLL的进程的名称?我正在使用C++和一些基本的WinAPI命令,但不是ATL、MFC等。目前我正在使用它自己的SDK功能轮询父软件,但这需要打开连接。根据配置文件的内容,DLL不需要打开连接,所以我想知道在建立通信之前加载它的版本

c++ - 将元素插入排序数组并找到其索引的最有效方法

我需要将一个元素插入排序范围,但我还需要知道它的索引(范围内小于该元素的元素数)。我想在O(logN)时间内完成此操作。我可以使用基本的C++容器执行此操作吗?我想使用std::multimap,有了这个容器,我可以将元素插入到它的位置,复杂度为O(logN)。但是要获取索引,我需要调用std::distance,这需要O(N)操作,因为multimap迭代器不是随机访问。另一种方法是使用排序的std::vector和std::binary_search算法。在这种情况下,搜索需要O(logN),但插入将需要O(N)操作,因为插入vector中间是线性操作。那么,是否有std/boos

c++ - 使用 boost::filesystem 添加 header 后,不再找到来自 google test 的单元测试

我有一个使用谷歌测试框架的单元测试项目,我的测试工作正常。但是现在我添加了boost::filesystem标题类似#include之后我的项目链接和编译正常,但是根本没有找到测试,当我运行测试时它给了我-Processfinishedwithexitcode-1073741515(0xC0000135)Emptytestsuite.如果我有这段代码:#includeTEST(Test,Test1){ASSERT_FALSE(true);}它工作得很好并找到失败的测试用例,但是如果我像这样添加boostheader:#include#includeTEST(Test,Test1){AS

c++ - 是否有 c++ 特性可以在 C++ 中的两种类型之间找到最受限制的类型?

我想要一个类型特征common这样common::type->intcommon::type->constintcommon::type->intcommon::type->int&common::type->intconst&即结果类型应该是两者中限制较多的那个。C++11std中是否有可以执行此操作的特性,还是我必须自己动手?我的用例是我有一个类似的东西templatestructFoo{BOOST_STATIC_ASSERT(std::is_same::type,typenamestd::decay::type>::value);//IneedtofindTwhichisthem

c++ - MSVC 编译器错误 C4315 - 未找到文档

今天编译我的应用程序时,我遇到了这个警告(我认为代码是不相关的):warningC4315:'MyClass':'this'pointerformember'MyClass::my_data_'maynotbealigned8asexpectedbytheconstructor我无法在联机帮助、本地安装的帮助或通过谷歌搜索中找到有关此警告的任何文档。我确实在MS论坛上找到了一个链接:NodocumentationforcompilerwarningC4315但没有关于错误本身的信息。你有关于这个错误的任何信息吗?我正在尝试弄清楚如何修复它。 最佳答案

c++ - 如何找到 QDockWidget 标题栏的高度?

我试图找到QDockWidget标题栏的高度,以便对自定义布局进行一些智能调整,但标题栏不是一个单独的小部件,它内置于私有(private)停靠小部件的布局,并且没有成员可以访问它。有没有其他方法可以找到它的高度? 最佳答案 是的,您可以使用dock的QStyle元素的pixelMetric成员函数找到标题栏的高度。您可能还想查询边距,因为它在标题栏周围增加了空间,布局需要注意它。示例:QDockWidget*myDock=newQDockWidget;inttitleBarHeight=myDock->style()->pixel

c++ - 拆分一个整数并找到最大和 C++

我正在开始自学C++,但我对我要完成的一项作业感到困惑。用户应该输入任意长的自然数,直到输入0。之后我的程序应该找到输入的最大数字总和并将其打印出来。它还应该打印出一个数字,从中得出总和。这是我尝试做的:#include#includeusingnamespacestd;intmain(){intinput=0;intdigit;intsum=0;intlargest=0;do{cout>input;while(input>0){digit=input%10;sum=sum+digit;input=input/10;}if(sum>largest)largest=sum;}while(